package com.zhb.delayQueue.queueOp;

/**
 * Created by millions on 2017/1/10.
 * 对于队列数据的操作
 */
public interface Operation {
    /**
     * 将一个新的延迟任务加入延迟队列中
     *
     * @param jobId 任务编号
     * @param delay 延迟时间
     * @param topic 属于哪个topic
     * @param ttr   reserve等待客户端返回
     * @param body  延迟任务数据 json格式
     * @return 是否加入延迟队列成功
     */
    boolean enqueue(String jobId, String topic, int ttr, String body, long delay);

    /**
     * 将已经就绪的延迟任务加入对应topic的就绪队列中
     *
     * @param jobId 任务编号
     * @param topic 所属topic
     * @return 是否成功加入就绪队列
     */
    boolean ready(String jobId, String topic);

    /**
     * 当被消费端读取时 增加 ttr 时间 重新加入延迟队列中
     *
     * @param jobId 任务编号
     * @return 是否保存成功
     */
    boolean reserve(String jobId, long ttr);

    /**
     * 当客户端发来确认消费成功的请求时 将job删除
     *
     * @param jobId 任务编号
     * @return 是否删除成功
     */
    boolean delete(String jobId);
}
